perm filename INTDIA.SAI[DIA,HPM] blob
sn#506111 filedate 1980-04-26 generic text, type T, neo UTF8
BEGIN "INTDIA"
comment diagrams for interest operator chapter;
REQUIRE "TYPHDR.SAI[GOD,HPM]" SOURCE_FILE;
INTEGER FJ;
comment figure 5-2;
BEGIN
PROCEDURE ARROW(REAL X1,Y1,X2,Y2);
BEGIN
REAL DX,DY,D; REAL ARRAY HEADX,HEADY[1:3];
LINE(X1,Y1,X2,Y2,2); DX←X2-X1; DY←Y2-Y1; D←SQRT(DX↑2+DY↑2);
DX←0.17*DX/D; DY←0.17*DY/D;
HEADX[1]←X2; HEADY[1]←Y2;
HEADX[2]←X2-DX-DY/4; HEADY[2]←Y2-DY+DX/4;
HEADX[3]←X2-DX+DY/4; HEADY[3]←Y2-DY-DX/4;
POLYGO(3,HEADX[1],HEADY[1]);
END;
PROCEDURE GRID(REAL X,Y; INTEGER N,IO,JO);
BEGIN
INTEGER I,J;
STRING PROCEDURE OFS(INTEGER O);
BEGIN
SETFORMAT(0,0);
RETURN(IF O=0 THEN "" ELSE IF O>0 THEN "+"&CVS(O) ELSE CVS(O));
END;
LITEN;
FOR I←0 STEP 1 UNTIL N DO
BEGIN
LINE(X+I,Y,X+I,Y+N,3);
LINE(X,Y+I,X+N,Y+I,3);
END;
SETFORMAT(0,0);
FOR I←0 STEP 1 UNTIL N-1 DO
FOR J←0 STEP 1 UNTIL N-1 DO
BEGIN
FNTPOS(X+.5+J,Y+N-.5-I);
DEPOSIT(0,0,CENTER(JSUB(JTXT(2,"P"),JTXT(3,CVS(I)&","&CVS(J)))));
IF I+IO<N ∧ I+IO≥0 ∧ I<N ∧ J<(IF IO≠0 THEN N ELSE N-1) THEN
ARROW(X+.5+J,Y+N-.5-I,X+.5+J+JO,Y+N-.5-I-IO);
END;
FNTPOS(X+2,Y-1.5);
DEPOSIT(0,0,CENTER(
JEXP(JCAT4(JTXT(4,"S"),
JSUB(JTXT(2,"(P"),JTXT(3,"I,J")),
JSUB(JTXT(2,"-P"),JTXT(3,"I"&OFS(IO)&",J"&OFS(JO))),
JTXT(2,")")),JTXT(2,"2"))));
END;
FJ←FILJOB("DSK:5-2.GOD[DIA,HPM]");
DDINIT; SCREEN(0,0,15,16);
FNTSELECT(1,"NONM"); comment Main text font;
FNTSELECT(2,"METMBM"); comment math font.;
FNTSELECT(3,"METSBM"); comment Small math font for sub-superscripts.;
FNTSELECT(4,"GRKL40"); comment Big greek, for use with math font.;
FNTSELECT(5,"GRKL30"); comment Medium greek, for use with math font.;
FNTSELECT(6,"BDR40"); comment Source of large bars, brackets, parens, R.;
GRID(2,11,4,0,1); GRID(9,11,4,1,0); GRID(2,3,4,1,1); GRID(9,3,4,1,-1);
DPYUP(-1);
KILJOB(FJ);
END;
comment figure 5-3;
BEGIN
REAL X,Y;
PROCEDURE GRIDA(REAL X,Y; INTEGER N,T);
BEGIN
INTEGER I;
LITEN;
FOR I←0 STEP 1 UNTIL N DO
BEGIN
LINE(X+I,Y,X+I,Y+N,T);
LINE(X,Y+I,X+N,Y+I,T);
END;
END;
PROCEDURE OUTL(REAL X,Y,W,D; INTEGER T);
BEGIN
REAL V;
FOR V←X+D,X+W-D DO LINE(V,Y+D,V,Y+W-D,T);
FOR V←Y+D,Y+W-D DO LINE(X+D,V,X+W-D,V,T);
END;
FJ←FILJOB("DSK:5-3.GOD[DIA,HPM]");
DDINIT; SCREEN(-4,-4,16,16);
GRIDA(0,0,12,1);
FOR X←0,4,8 DO FOR Y←0,4,8 DO OUTL(X,Y,4,0,5);
FOR X←0,4,8 DO FOR Y←2,6 DO OUTL(X,Y,4,.15,5);
FOR X←2,6 DO FOR Y←0,4,8 DO OUTL(X,Y,4,.15,5);
FOR X←2,6 DO FOR Y←2,6 DO OUTL(X,Y,4,.3,5);
DPYUP(-1);
KILJOB(FJ);
END;
END;